package com.zsqat.eshop.member.feign;

import com.zsqat.common.utils.R;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;

// 告诉 spring cloud 这个接口是一个远程客户端，
// 要调用coupon服务，调用coupon服务/coupon/coupon/member/list对应的方法
@FeignClient("eshop-coupon")
public interface CouponFeignService {
  // 注意写优惠券类全映射
  // 注意我们这个地方不属于控制层，这个请求的不是我们服务器上的东西(不是com.zsqat.eshop.member.controller.MemberController)，
  // 而是nacos注册中心(com.zsqat.eshop.coupon.controller.CouponController)
  @RequestMapping("/coupon/coupon/member/list")
  // 接口签名要和被调方法签名一致
  public R membercoupons();
}

/*
 * 想要远程调用的步骤：
 * 1. 引入openfeign
 * 2. 编写一个接口，接口告诉springcloud这个接口需要调用远程服务
 * 	 2.1 在接口里声明@FeignClient("gulimall-coupon")他是一个远程调用客户端且要调用coupon服务
 * 	 2.2 要调用coupon服务的/coupon/coupon/member/list方法
 * 3. 开启远程调用功能 @EnableFeignClients，要指定远程调用功能放的基础包
 */

/*
  @RefreshScope
  @RestController
  @RequestMapping("coupon/coupon" )
  public class CouponController {
  @Autowired
  private CouponService couponService;
  // 测试远程调用功能，此处的函数是被其他服务调用
  @RequestMapping("/member/list" )
  public R membercoupons() {
    // 应该去数据库查用户对于的优惠券，但这个我们简化了，不去数据库查了，构造了一个优惠券给他返回
    CouponEntity couponEntity = new CouponEntity();
    couponEntity.setCouponName("满100-10" ); // 优惠券的名字
    return R.ok().put("coupons", Arrays.asList(couponEntity));
  }
 }

*/